
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain_openai import ChatOpenAI

# 通义千问
llm = ChatOpenAI(
        api_key="",
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        model="qwen-plus",  # 指定要使用的模型
        temperature=0.7
    )

def create_news_analysis_chain():
    """创建新闻解析的LangChain链"""
    # 定义提示词模板
    prompt_template = """
    请详细解析以下新闻内容：
    1. 核心事件：用一句话概括新闻核心
    2. 背景分析：事件发生的背景和相关上下文
    3. 关键信息：重要数据、人物或时间节点
    4. 潜在影响：可能带来的后续影响或趋势(主要包括民生、经济等方面)
    5. 可能内容有其他干扰因素，请正确识别新闻正文(识别就好，不用输出)
    新闻内容：
    {news_content}
    """

    # 创建并返回链
    return LLMChain(
        llm=llm,
        # 填充提示词模板中的变量后才是完整的提示词
        prompt=PromptTemplate(
            input_variables=["news_content"],
            template=prompt_template
        )
    )


def analyze_news(news_content: str) -> str:
    """解析新闻内容"""
    chain = create_news_analysis_chain()
    result = chain.run(news_content=news_content)
    return result